/*
  学习目标：处理this指向undefined的三种办法
  原理： 箭头函数本身没有this，自动绑定调用时所处环境中的this

  步骤：
     1. 💥React自带结构体： this指向正确，指向组件实例对象
     2. 💥非React自带结构体： this指向不正确，指向undefined
*/

import React, { Component } from 'react';

export default class App extends Component {
  state = { msg: '123' };

  handleClick1() {
    console.log('this 1 ----->  ', this.state.msg);
  }

  // 1. 👍使用箭头函数， 定义事件处理函数
  handleClick = () => {
    console.log('this  ----->  ', this.state.msg);
  };

  render() {
    console.log('this  ----->  ', this);
    return (
      <div>
        <button
          // 3.👎了解即可， 不推荐， bind改变this指向
          onClick={this.handleClick1.bind(this)}
        >
          点我bind
        </button>
        <button
          // 2. 👍在render函数内， 使用箭头函数绑定事件
          onClick={() => this.handleClick1()}
        >
          点我
        </button>

        <button onClick={this.handleClick}>点我</button>
      </div>
    );
  }
}
